package com.bwie.cart.mapper;

import com.bwie.cart.domain.dto.CartAddDTO;
import com.bwie.cart.domain.po.CartDetailPo;
import com.bwie.cart.domain.po.CartPo;
import com.bwie.cart.domain.po.PmsSkuInfoPo;
import com.bwie.cart.domain.vo.CartItem;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

@Mapper
public interface CartMapper {
    /**
     * 根据用户id和skuId获得购物车商家信息
     * @param sellerId
     * @param userId
     * @return
     */
    List<CartDetailPo> getCartDetailByUserIdSkuId(@Param("sellerId") Long sellerId, @Param("userId") Long userId);

    /**
     * 根据userId获得cartId
     * @param userId
     * @return
     */
    Integer getCartIdByUserId(Long userId);

    /**
     * 添加购物车
     * @param addCart
     * @param cartId
     */
    void addCartItem(@Param("addInfo") CartAddDTO addCart,@Param("cartId") Long cartId,@Param("attrValue") String attrValue);

    /**
     * 根据skuId获得skuAttrValue
     * @param skuId
     * @return
     */
    String getAttrValueBySkuId(Long skuId);

    /**
     * 根据UserId获得购物车
     * @param userId
     * @return
     */
    CartPo getCartPoByUserId(Long userId);

    /**
     * 根据卖家id购物车id获得商品详情
     * @param sellerId
     * @param id
     * @return
     */
    CartDetailPo getCartDetailPoBySellerIdCartId(@Param("sellerId") Long sellerId,@Param("id") Long id);

    /**
     * 添加购物车
     * @param cartPo
     */
    void addCart(CartPo cartPo);

    /**
     * 根据skuid获得skuInfo
     * @param skuId
     * @return
     */
    PmsSkuInfoPo getSkuById(Long skuId);

    /**
     * 清空商品详情数据库
     */
    void delAllCartItem();

    /**
     * 同步数据库
     * @param cartItemValue
     */
    void syncCartItem(CartItem cartItemValue);

    /**
     * 根据id获得卖家名称
     * @param sellerId
     * @return
     */
    String getSellNameById(Long sellerId);

    /**
     * 获得商家id
     * @param skuId
     * @return
     */
    Long getSellerId(Long skuId);
}
